package cn.xopencode.recordservice.rpc.kvoperation;

import cn.xopencode.common.framework.vo.CommonResult;
import cn.xopencode.common.framework.vo.PageResult;
import cn.xopencode.recordservice.rpc.kvoperation.dto.*;
import cn.xopencode.recordservice.rpc.kvoperation.vo.*;
import cn.xopencode.recordservice.rpc.robotroom.dto.AdminRecordPageDTO;

public interface KvOperationRecordRpc {

    /**
     * 新增10KV操作室巡检记录
     *
     * @param createDTO
     * @return
     */
    CommonResult<KvOperationRecordCreateVO> createKvOperationRecord(KvOperationRecordCreateDTO createDTO);

    /**
     * 新增10KV操作室下一组记录
     *
     * @param createDTO
     * @return
     */
    CommonResult<Integer> createKvOperationRecordNextLine(KvOperationRecordNextCreateDTO createDTO);

    /**
     * 获得10KV操作室巡检记录分页
     *
     * @param pageDTO
     * @return
     */
    CommonResult<PageResult<KvOperationRecordPageVO>> pageKvOperationRecord(KvOperationRecordPageDTO pageDTO);

    /**
     * 根据记录id获取10KV操作室巡检记录详情
     * @param id
     * @return
     */
    CommonResult<KvOperationRecordVO> getKvOperationRecordById(String id);

    /**
     * 根据记录标识、下一组的排序，获取10KV操作间巡检记录中下一组的详细
     * @param recordCode
     * @param recordSeq
     * @return
     */
    CommonResult<KvOperationRecordNextVO> getKvOperationRecordNextById(String recordCode, Integer recordSeq);

    /**
     * 更新10KV操作间巡检记录
     * @param updateDTO
     * @return
     */
    CommonResult<Integer> updateKvOperationRecord(KvOperationRecordUpdateDTO updateDTO);

    /**
     * 更新10KV操作间巡检记录中下一组数据
     * @param updateDTO
     * @return
     */
    CommonResult<Integer> updateKvOperationRecordNext(KvOperationRecordNextUpdateDTO updateDTO);

    /**
     * 处理 10KV操作间巡检记录 中的异常，在巡检记录中只是改变状态
     * @param recordDetailId
     * @return
     */
    CommonResult<Integer> dealKvOperationRecordLineException(String recordDetailId);

    /**
     * 后台--根据查询条件 分页获取所有的10KV操作室巡检记录
     * @param pageDTO
     * @return
     */
    CommonResult<PageResult<KvOperationRecordAdminPageVO>> getAdminPage10KvOperationRecord(AdminRecordPageDTO pageDTO);
}
